import { login, userInfo, userDetialInfo } from '@/api/user'
import { setToken, getToken, removeToken, setDateNow } from '@/utils/auth'
import { resetRouter } from '@/router'
// // 写一个重置路由的方法，切换用户后，或者退出时清除动态加载的路由
// export function resetRouter() {
//   const newRouter = createRouter()
//   router.matcher = newRouter.matcher // 新路由实例matcer，赋值给旧路由实例的matcher，（相当于replaceRouter）
// }
const state = {
  // token: localStorage.getItem('token') || ''
  token: getToken() || '',
  userInfo: {}
}
const mutations = {
  settoken(state, data) {
    // localStorage.setItem('token', data)
    // 记录到 Cookies 当中 方便持久化
    setToken(data)
    // 记录到 state 马上可以使用
    state.token = data
    console.log(state.token)
  },
  setUserInfo(state, data) {
    state.userInfo = data
  },
  removeToken(state) {
    removeToken()
    state.token = ''
  },
  removeuserInfo(state) {
    state.userInfo = {}
  }

}
const actions = {
  async login(store, data) {
    // 点击登录记录时间戳
    setDateNow()
    const res = await login(data)
    // console.log(res)
    // store.commit('settoken', res.data.data)
    store.commit('settoken', res)
  },
  // 获取用户基本信息
  async getUserInfo(store) {
    const res = await userInfo()
    const detial = await userDetialInfo(res.userId)
    store.commit('setUserInfo', { ...res, ...detial })
  },
  // 退出登录
  logout(store) {
    // 重置路由
    resetRouter()
    store.commit('removeToken')
    store.commit('removeuserInfo')
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions

}
